package com.shuaigexue.aicodegenerate.service;

import com.mybatisflex.core.query.QueryWrapper;
import com.mybatisflex.core.service.IService;
import com.shuaigexue.aicodegenerate.entity.App;
import com.shuaigexue.aicodegenerate.entity.User;
import com.shuaigexue.aicodegenerate.model.dto.app.AppQueryRequest;
import com.shuaigexue.aicodegenerate.model.vo.AppVO;
import reactor.core.publisher.Flux;

import java.util.List;

/**
 * 应用 服务层。
 *
 * @author <a href="https://github.com/liyupi">程序员鱼皮</a>
 */
public interface AppService extends IService<App> {

    /**
     * 获取应用用相关信息
     * @param app
     * @return
     */
     AppVO getAppVO(App  app);

    /**
     * 获取应用列表
     * @param appList
     * @return
     */
     List<AppVO> getAppVOList(List<App> appList);


    /**
     * 获取查询包装类
     * @param appQueryRequest
     * @return
     */
     QueryWrapper getQueryWrapper(AppQueryRequest appQueryRequest);


    /**
     * 通过聊天生成应用代码
     * @param appId 应用 ID
     * @param message 聊天内容
     * @param loginUser 登录用户
     * @return 生成的代码流
     */
     Flux<String> chatToGenCode(Long appId, String message, User loginUser);


    /**
     * 部署应用服务
     * @param appId
     * @param loginUser
     * @return
     */
     String deployApp(Long appId,User loginUser);
}
